
package view;

import control.Comando;
//import control.UsuarioDAO;
import control.Controle;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import javax.swing.*;
import model.*;


public class InterfaceComprarMusica implements Comando {

    @Override
    public void executar() {
        HashMap musicas = new HashMap();      
        
        int valor = 0;
        ArrayList<String> opcoes = new ArrayList();
        
        String pesquisa = Controle.getInput("Pesquisar:", "Pesquisar Músicas");
        
        ArrayList<Musica> musicasAux = Controle.pesquisarMusicas(pesquisa);
        
        musicasAux.removeAll((Collection)Controle.usuarioAtual.getPlaylists("Principal").getMusicas());
        if (Controle.usuarioAtual instanceof Artista) musicasAux.removeAll((Collection)((Artista)Controle.usuarioAtual).getMusicas());
        Iterator<Musica> it = musicasAux.iterator();        
        
        if (musicasAux.size() == 0) JOptionPane.showMessageDialog(null, "Não há músicas disponíveis para você comprar");
            else {
            while(it.hasNext())
            {
                Musica obj = it.next();
                String chave = Integer.toString(valor) + " | " + obj.getTitulo() + " - " +obj.getArtista().getNomeArtistico() + " : " + obj.getValorFormatado();
                opcoes.add(chave);
                musicas.put(chave, obj);

                valor++;            
            }
            opcoes.add("Voltar");
            musicas.put("Voltar", null);

            String retorno =  Controle.getInput("Escolha sua Música:", "Compra Música", opcoes.toArray());
            if (musicas.get(retorno)!=null){
                Musica musica = (Musica)musicas.get(retorno); 
                if (Controle.usuarioAtual.getContaUsuario().debitar(musica.getValor())){
                    musica.getArtista().getContaArtista().creditar(musica.getValor());
                    Controle.usuarioAtual.getPlaylists("Principal").addMusica(musica);
                    JOptionPane.showMessageDialog(null, "Musica comprada com sucesso! Saldo Atual: " + Controle.usuarioAtual.getContaUsuario().toString());
                } else JOptionPane.showMessageDialog(null, "Saldo insuficiente");      
            }  
        }
    }
}
